package com.solution.admin.coupon.entity;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.solution.common.entity.BaseEntity;

/**
 * 优惠券信息实体类
 * 
 * @author xu_cc
 * @date 2017-11-16 11:11:20
 */
public class CouponEntity extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /* 领取数量 */
    private int getNumber;
    /* 使用数量 */
    private int usedNumber;

    /**
     * 优惠券名称
     */
    private String couponName;

    /**
     * 优惠券面值
     */
    private BigDecimal couponAmount;

    /**
     * 1=起止时间（开始时间，结束时间有值），2=时长（XXX天）
     */
    private Integer timeType;

    /**
     * 有效期开始时间
     */
    private Date beginTime;

    /**
     * 有效期结束时间
     */
    private Date endTime;

    /**
     * 有效期限天数
     */
    private Integer limitDay;

    /**
     * 领取开始时间
     */
    private Date beginGetTime;

    /**
     * 领取结束时间
     */
    private Date endGetTime;

    /**
     * 发放数量
     */
    private Integer issueNumber;

    /**
     * 每人限领（空则表示不限）
     */
    private Integer limitNumber;

    /**
     * 使用条件金额
     */
    private BigDecimal conditionAmount;

    /**
     * 是否上不封顶(1=是，0=否）
     */
    private Integer isLimit;

    /**
     * 备注
     */
    private String remark;
    
    /**
     * 是否与其他活动叠加使用
     */
    private Integer isComposition;
    
    /**
     * 用户优惠券id (一类优惠券对于对个用户是不同的id)
     * 一个用户多次领取一类优惠券，会生成多个id
     */
    private long userCouponId;
    
    /**
     * 客户id
     */
    private long customerId;
    
    
    /**
     * 优惠券类型
     */
    private String couponType;
    
    /**
     * 审核附件
     */
    private String filePath;
    
    /**
     * 优惠券活动规则描述 
     */
    private String promotionRule;
    
    /**
     * 审批状态
     */
    private String approveStatus;
    
    /**
     * 审核人姓名
     */
    private String approveUserName;
    
    /**
     * 审核时间
     */
    private String approveTime;
    
    
    // 领用类型
 	private String getTargetType;
 	private String getTargetList;
 			
 	// 使用类型
 	private String useTargetType;
 	private String useTargetList;
 	
    public String getGetTargetType() {
		return getTargetType;
	}

	public void setGetTargetType(String getTargetType) {
		this.getTargetType = getTargetType;
	}

	public String getGetTargetList() {
		return getTargetList;
	}

	public void setGetTargetList(String getTargetList) {
		this.getTargetList = getTargetList;
	}

	public String getUseTargetType() {
		return useTargetType;
	}

	public void setUseTargetType(String useTargetType) {
		this.useTargetType = useTargetType;
	}

	public String getUseTargetList() {
		return useTargetList;
	}

	public void setUseTargetList(String useTargetList) {
		this.useTargetList = useTargetList;
	}

	/**
     * @return the couponName
     */
    public String getCouponName() {
        return couponName;
    }

    /**
     * @param couponName
     *            the couponName to set
     */
    public void setCouponName(String couponName) {
        this.couponName = couponName;
    }

    /**
     * @return the couponAmount
     */
    public BigDecimal getCouponAmount() {
        return couponAmount;
    }

    /**
     * @param couponAmount
     *            the couponAmount to set
     */
    public void setCouponAmount(BigDecimal couponAmount) {
        this.couponAmount = couponAmount;
    }

    /**
     * @return the timeType
     */
    public Integer getTimeType() {
        return timeType;
    }

    /**
     * @param timeType
     *            the timeType to set
     */
    public void setTimeType(Integer timeType) {
        this.timeType = timeType;
    }

    /**
     * @return the beginTime
     */
    public Date getBeginTime() {
        return beginTime;
    }

    /**
     * @param beginTime
     *            the beginTime to set
     */
    public void setBeginTime(Date beginTime) {
        this.beginTime = beginTime;
    }

    /**
     * @return the endTime
     */
    public Date getEndTime() {
        return endTime;
    }

    /**
     * @param endTime
     *            the endTime to set
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    /**
     * @return the limitDay
     */
    public Integer getLimitDay() {
        return limitDay;
    }

    /**
     * @param limitDay
     *            the limitDay to set
     */
    public void setLimitDay(Integer limitDay) {
        this.limitDay = limitDay;
    }

    /**
     * @return the beginGetTime
     */
    public Date getBeginGetTime() {
        return beginGetTime;
    }

    /**
     * @param beginGetTime
     *            the beginGetTime to set
     */
    public void setBeginGetTime(Date beginGetTime) {
        this.beginGetTime = beginGetTime;
    }

    /**
     * @return the endGetTime
     */
    public Date getEndGetTime() {
        return endGetTime;
    }

    /**
     * @param endGetTime
     *            the endGetTime to set
     */
    public void setEndGetTime(Date endGetTime) {
        this.endGetTime = endGetTime;
    }

    /**
     * @return the issueNumber
     */
    public Integer getIssueNumber() {
        return issueNumber;
    }

    /**
     * @param issueNumber
     *            the issueNumber to set
     */
    public void setIssueNumber(Integer issueNumber) {
        this.issueNumber = issueNumber;
    }

    /**
     * @return the limitNumber
     */
    public Integer getLimitNumber() {
        return limitNumber;
    }

    /**
     * @param limitNumber
     *            the limitNumber to set
     */
    public void setLimitNumber(Integer limitNumber) {
        this.limitNumber = limitNumber;
    }

    /**
     * @return the conditionAmount
     */
    public BigDecimal getConditionAmount() {
        return conditionAmount;
    }

    /**
     * @param conditionAmount
     *            the conditionAmount to set
     */
    public void setConditionAmount(BigDecimal conditionAmount) {
        this.conditionAmount = conditionAmount;
    }

    /**
     * @return the isLimit
     */
    public Integer getIsLimit() {
        return isLimit;
    }

    /**
     * @param isLimit
     *            the isLimit to set
     */
    public void setIsLimit(Integer isLimit) {
        this.isLimit = isLimit;
    }

    /**
     * @return the remark
     */
    public String getRemark() {
        return remark;
    }

    /**
     * @param remark
     *            the remark to set
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Integer getIsComposition() {
		return isComposition;
	}

	public void setIsComposition(Integer isComposition) {
		this.isComposition = isComposition;
	}

	/**
     * @return the getNumber
     */
    public int getGetNumber() {
        return getNumber;
    }

    /**
     * @param getNumber
     *            the getNumber to set
     */
    public void setGetNumber(int getNumber) {
        this.getNumber = getNumber;
    }

    /**
     * @return the usedNumber
     */
    public int getUsedNumber() {
        return usedNumber;
    }

    /**
     * @param usedNumber
     *            the usedNumber to set
     */
    public void setUsedNumber(int usedNumber) {
        this.usedNumber = usedNumber;
    }

	public long getUserCouponId() {
		return userCouponId;
	}

	public void setUserCouponId(long userCouponId) {
		this.userCouponId = userCouponId;
	}

	public long getCustomerId() {
		return customerId;
	}

	public void setCustomerId(long customerId) {
		this.customerId = customerId;
	}

	public String getCouponType() {
		return couponType;
	}

	public void setCouponType(String couponType) {
		this.couponType = couponType;
	}

	public String getFilePath() {
		return filePath;
	}

	public void setFilePath(String filePath) {
		this.filePath = filePath;
	}

	public String getPromotionRule() {
		return promotionRule;
	}

	public void setPromotionRule(String promotionRule) {
		this.promotionRule = promotionRule;
	}

	public String getApproveStatus() {
		return approveStatus;
	}

	public void setApproveStatus(String approveStatus) {
		this.approveStatus = approveStatus;
	}
	
	public String getApproveUserName() {
		return approveUserName;
	}

	public void setApproveUserName(String approveUserName) {
		this.approveUserName = approveUserName;
	}

	public String getApproveTime() {
		return approveTime;
	}

	public void setApproveTime(String approveTime) {
		this.approveTime = approveTime;
	}
    
}
